/*生成一个独一无二的值*/
{
    let a=Symbol();
    console.log(a);//Symbol()
    let b=Symbol();
    console.log(a===b);//false
    //怎么取到已定义的Symbol
    let a1=Symbol.for('001');//不存在001的key就生成一个Symbol，存在就返回
    let b1=Symbol.for('001');
    console.log(a1===b1);//true
}
{
    /*使用场景*/
    let obj={//当两个属性名根据需要相同时，可以使用
        [Symbol.for('name')]: 'hhj',//注意[]里的内容是函数表达式，里面的内容计算后输出
        name: 'hc'//本来name是字符串，要加‘’的，但是可以不加，自动识别为字符串
    };
    console.log(obj);
    /*遍历*/
    for (let [key,value] of Object.entries(obj)){
        console.log(key,value);//发现取不到Symbol的值 name hc
    }
    Object.getOwnPropertySymbols(obj).forEach((item,index)=>{console.log(item,index)});
    //只能取到Symbol的值

    Reflect.ownKeys(obj).forEach(key=>{console.log(key,obj[key])});
    //name hc Symbol(name) "hhj" 可以拿到所有的key
}